package cn.edu.ncu.housinghub.dto.request.house;

import lombok.Data;

import java.math.BigDecimal;

/**
 * 用户查找附近房源的请求，存储用户的地理位置和搜索半径
 **/
@Data
public class NearbyHouseRequest {
    private BigDecimal longitude;  // 用户经度
    private BigDecimal latitude;   // 用户纬度
    private Integer radius;        // 搜索半径（米），默认5000米

    // 可选的额外筛选条件（与HouseConditionRequest类似）
    private Integer layout;        // 户型
    private Integer rentMin;       // 最小租金
    private Integer rentMax;       // 最大租金
    private String orientation;    // 朝向
    private Integer houseRentType; // 出租类型

    // 面积范围
    private BigDecimal areaMin;       // 最小面积
    private BigDecimal areaMax;       // 最大面积

    // 分页参数
    private Integer pageNum = 1;   // 页码，默认第1页
    private Integer pageSize = 10; // 每页大小，默认10条

    // getters and setters
    public Integer getPageNum() {
        return pageNum != null && pageNum > 0 ? pageNum : 1;
    }

    public Integer getPageSize() {
        return pageSize != null && pageSize > 0 && pageSize <= 100 ? pageSize : 10;
    }

    // 面积范围验证
    public boolean isValidAreaRange() {
        if (areaMin == null || areaMax == null) {
            return true; // 或者根据业务逻辑返回 false
        }
        return areaMin.compareTo(areaMax) <= 0;
    }
}